// 一个函数 ，接受一个组件作为参数并返回一个新的组件

import { useLocation,useParams ,useSearchParams} from "react-router-dom";

// 面试当中问你 什么情况下自己写过高阶组件？？？？
// 答案： react-router 的v6版本当中不在由withRouter来让类组件获取路由参数
// 所以需要我们单独的去封装一个 withRouter的高阶组件
// 里面通过一个函数组件先获取路由参数然后再传递给 类组件

// 类组件不能使用 hook  
// 没关系
// 我们让 一个函数组帮我们去拿 然后再传给类组件
const withRouter = (Cp)=>{
    
    return function(){
        // 在函数组件内部就可以使用hook
        const location = useLocation();
        const params = useParams();
        const  [search] = useSearchParams();
        return (
            <Cp 
                location={location} 
                params={params}
                search={search}
             ></Cp>
        )
    }
}


export default withRouter;